home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PAS_0693 / NEWVARS.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-30  |  2KB  |  59 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 322 of 362
  3. From : Jon Jasiunas                        1:273/216.0          28 May 93  09:56
  4. To   : Rob Perelman
  5. Subj : Make a new VAR in program
  6. ────────────────────────────────────────────────────────────────────────────────
  7. ===========================================================================
  8. Date: 05-22-93 (22:04)
  9. Subj: Make a new VAR in program
  10.    ------------------------------------------------------------------------
  11. RP> I was wondering if there's a way to make a new variable inside the
  12.   > program code...like say:
  13.  
  14. RP> MAKEVAR(THISNAME, Array[1..10] of String);
  15.  
  16. No......
  17.  
  18. RP> Or at least change the size:
  19.  
  20. RP> {In Proper Place: Var ThisName: Array[1..10] of String;
  21.   > In Program: IncVar(ThisName, 1); Now Array[1..11]
  22.  
  23. RP> No?  Maybe just wishful thinking...
  24.  
  25. This can be done by using a dynamic array.  Just make sure to use
  26. pointers so you don't overwrite other data and/or program code.
  27.  
  28.    - cut here ----}
  29. uses
  30.   Crt;
  31.  
  32. type
  33.   ItemType = String;
  34.   StrArray = array[0..0] of ItemType;
  35.  
  36. var
  37.   PStr       : ^StrArray;
  38.   NumElements: Byte;
  39.   Index      : Byte;
  40.  
  41. begin
  42.   ClrScr;
  43.   WriteLn('Allocate space for how many strings? ',
  44.           '(255 max)');
  45.   ReadLn(NumElements);
  46.   WriteLn;
  47.   If NumElements > 255 then
  48.     NumElements := 255;
  49.   GetMem(PStr, NumElements * SizeOf(ItemType));
  50.   For Index := 0 to Pred(NumElements) do
  51.     begin
  52.       Write('String to store in element ', Index, '? ');
  53.       ReadLn(PStr^[Index]);
  54.     end;  { For }
  55.   ClrScr;
  56.   For Index := 0 to Pred(NumElements) do
  57.     WriteLn('String stored in element ', Index, ' = ', PStr^[Index]);
  58.   FreeMem(PStr, NumElements * SizeOf(ItemType));
  59. end.